﻿using System;

namespace YG.CommonFuncs
{
    /// <summary>
    /// 获取类的属性
    /// </summary>
    public class ClassAttribute
    {
        public string GetMethodInfo()
        {
            string str = "";

            //取得当前方法命名空间
            str += "命名空间名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "\n";

            //取得当前方法类全名 包括命名空间
            str += "类名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + "\n";

            //取得当前方法名
            str += "方法名:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\n"; str += "\n";

            //父方法
            System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
            System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();

            //取得父方法命名空间
            str += "父方法命名空间:" + mb.DeclaringType.Namespace + "\n";

            //取得父方法类名
            str += "父方法类名:" + mb.DeclaringType.Name + "\n";

            //取得父方法类全名
            str += "父方法类全名:" + mb.DeclaringType.FullName + "\n";

            //取得父方法名
            str += "父方法名:" + mb.Name + "\n";

            return str;
        }

        public string GetFatherNamespace()
        {
            string str = "";
            //父方法
            System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
            System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();

            //取得父方法命名空间
            str += mb.DeclaringType.Namespace;

            return str;
        }

        public string GetProgramPath()
        {
            return AppDomain.CurrentDomain.BaseDirectory;//获得当前服务器程序的运行目录
        }

        public string GetFatherClassName()
        {
            string str = "";
            //父方法
            System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
            System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();

            //取得父方法类名
            str += mb.DeclaringType.Name;

            return str;
        }

        public string GetFatherFullName()
        {
            string str = "";
            //父方法
            System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
            System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();

            //取得父方法类全名
            str += mb.DeclaringType.FullName;

            return str;
        }

        public string GetFatherName()
        {
            string str = "";
            //父方法
            System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
            System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();

            //取得父方法名
            str += mb.Name;

            return str;
        }

        public string GetFatherFuncFullName()
        {
            string str = "";
            //父方法
            System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
            System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();

            //取得父方法命名空间
            str += mb.DeclaringType.Namespace + "\n";

            //取得父方法类名
            str += mb.DeclaringType.Name + "\n";

            //取得父方法类全名
            str += mb.DeclaringType.FullName + "\n";

            //取得父方法名
            str += mb.Name + "\n";

            return str;
        }
    }
}